# #创建集合set
# #1、可以使用大括号来进行创建
# s = {1, 2, 3, 4}
# #2、使用set()函数来进行创建
# ss = set('1234')
# print(type(s))
# print(type(ss))
#
# #集合的添加和删除
# #添加元素
# s.add(6)
# print(s)
# #删除集合中的第一个元素
# s.pop()
# print(s)
# #删除集合中的元素
# s.remove(4)
# print(s)
#
#
# ##创建元组
# #创建空元组
# tuple1 = ()
# print(tuple1)
# #创建带有元素的元组，可以有元组类型
# tuple2 = (1, 'a', 3, 'hello', 2.2)
# print(tuple2)
# #创建只有一个元素的元组
# tuple3 = (1,)
# print(type(tuple3))
#
# ##使用tuple()函数将其他数据类型转化为元组类型
# #语法格式：tuple(数据)
# #将字符串转化为元组
# tuple1 = tuple('hello')
# print(tuple1)
# #将列表转换成元组
# list1 = ['Python', 'Java', 'C++', 'C']
# tuple2 = tuple(list1)
# print(tuple2)

# #从开始索引开始截取，截至到结束索引之前
# tuple1 = ('h', 'e', 'l', 'l', 'o')
# ##使用索引访问元组中的某个元素
# #使用正数索引，从0开始
# print(tuple1[2])
# #使用负数索引，倒序从-1开始
# print(tuple1[-4])
#
# ##使用切片访问元组中的一组元素，前闭后开
# #使用正数切片
# print(tuple1[1: 4])
# #指定步长
# print(tuple1[1: 4: 2])
# #使用负数切片
# print(tuple1[-5: -1])
# #修改元组元素
# tuple1 = (12, 34, 56)
# tuple2 = ('abc', 'mn')
# #修改元组元素操作是非法的
# tuple1[0] = 100
# tuple1[0] = 200
# #连接元组创建一个新的元组，两个数据必须都是元组
# tuple3 = tuple1 + tuple2
# print(tuple3)

# #删除元组
# t1 = (1, 23, 45, 6)
# print(t1)
# del t1
# print(t1)

# n = input('请输入联系人姓名：')
# t = input('请输入13位手机号：')
# e = input('请输入邮箱地址：')
# a = input('请输入联系地址：')
# tuple1 = ("姓名：", n, "电话：", t, "邮箱：", e, "地址：", a)
# print(tuple1)
#
#
# #创建列表
# #1.使用[]直接创建列表
# ##创建一个空列表
# l1 = []
# print(l1)
# ##创建有元素的列表
# l2 = [7, 9, 'python', 3.5]
# print(l2)
# print(type(l2))
#
# #2.使用list()函数将其他数据类型(字符串、元组、range函数)转换为列表
# ##创建空列表
# ll = list()
# print(ll)
# ##1、将字符串转换为列表
# list1 = list("hello")
# print(list1)
# ##2、转化元组
# t1 = tuple('hello')
# l4 = list(t1)
# print(l4)
# ##3、转化range()函数
# r1 = range(5)
# l5 = list(r1)
# print(15)
#
#
# ##访问列表中的元素
# list1 = ['p', 'y', 't', 'h', 'o', 'n']
# #使用正向索引
# print(list1[4])
# #使用负向索引
# print(list1[-3])
# ##使用切片形式访问列表中的元素
# #使用正数切片，截取2,3,4的元素，默认步长为1
# print(list1[2:5])
# #取索引3-5的元素，末尾
# print(list1[3:])
# #取索引0-2的元素，开头
# print(list1[:3])
# #取索引1-5，步长2
# print(list1[1::2])
# #使用负切片，取后三个元素
# print(list1[-3:])
# #使用负切片，取-5到-1，步长是2的元素
# print(list1[-5:-1:2])

# #遍历列表
# ##使用for循环遍历列表
# l3 = [1, 2, 3, 4, 5, 6]
# for i in l3:
#     print(i)
#
# ##修改列表元素
# #修改单个元素
# l4 = [10, 56, 34 ,2, 79, 66, 7]
# ##将索引为2的元素值修改为100
# l4[2] = 100
# print(l4)
# ##修改多个元素
# l5 = [10, 56, 34 ,2, 79, 66, 7]
# ##修改1~4个元素的值（不包含第4个）
# l5[1:4:1] = [45, -56, 98]
# print(l5)
#
# ##列表中添加元素
# #1、append()用于在列表末尾追加元素
# l6 = [1, 2, 3]
# l6.append('f')
# print(l6)
# ##列表添加列表
# l6.append(['e', 'f'])
# print(l6)

# #2、extend()在列表末尾一次添加多个元素
# l13 = ['a', 'b', 'c']
# l13.extend('d')
# print(l13)
# #列表添加列表
# l13.extend(['e', 'f', 'g', 'h'])
# print(l13)
# l13.extend('world')
# print(l13)
#
# #3、insert()在列表的特定位置添加想要添加的特定元素
# l14 = ['python', 'C','Java']
# #插入元素，在索引为2处插入go元素
# l14.insert(2, 'go')
# print(l14)

# #删除元素
# #remove删除：remove()方法是移除掉列表里的特定元素,但只会删除第一个和指定值相同的元素，并且必须保证该元素是存在的
# l15 = ['a', 'b', 'c', 'd']
# l15.remove('a')
# print(l15)
#
# #pop()方法用来删除列表中的指定索引处的元素
# l16 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# l16.pop(4)
# print(l16)
# l16.pop()
# print(l16)
#
# #del可以用来删除列表中的单个元素或者一段连续的元素
# #删除单个元素
# l17 = [1, 4, 6, 2, 7, 9, 3]
# del l17[5]
# print(l17)
# #删除6 2 7这三个元素
# del l17[2:5]
# print(l17)
#
# #删除全部元素，可以使用列表的clear()方法
# l18 = [5, 'a', 8, 'python', 9, 5]
# l18.clear()
# print(l18)


# # # 任务
# # # 创建两个空列表name_list和phone_list，用于存储联系人姓名和电话；
# # # 向列表中添加联系人信息；
# # # 输入联系人编号修改信息；
# # # 输入联系人编号删除信息；
# # # # 使用clear()清空通讯录。name_list=['张三'， ’李四', '王五', ‘maliu'],phone_list=[123, 236, 258, 598]
# name_list = []
# phone_list = []
# while 1:
#     print("菜单：1.添加联系人 2.修改联系人 3.删除联系人")
#     chioce = input("请输入选择：")
#     #1.添加联系人，包括姓名，手机号
#     if chioce == "1":
#         name_list.append(input("请输入联系人电话："))
#         phone_list.append(input("请输入联系人手机号："))
#         print(name_list)
#         print(phone_list)
#     #2.修改联系人信息
#     elif chioce == "2":
#         num = int(input("请输入联系人编号:"))
#         if len(name_list) > 0 and num <= len(name_list):
#             name_list[num - 1] = input("修改联系人姓名")
#             phone_list[num - 1] = input("修改联系电话")
#         else:
#             print("联系人编号输入有误")
#     #3、删除联系人信息
#     elif chioce == "3":
#         num = int(input("请输入联系人编号："))
#         if len(name_list) > 0 and num <= len(name_list):
#             name_list.pop(num - 1)
#             phone_list.pop(num - 1)
#         else:
#             print("联系人编号有误")
#     else:
#         print("显示联系人信息")
#         print(name_list)
#         print(phone_list)


 # #查找元素index()
# ls1 = [1, 2, 4, 6, 8, 'a', 5, 'b', 9, 7]
# print(ls1.index(1))
# print(ls1.index('b', 6))
# print(ls1.index('a', 5, 8))
# print(ls1.index(0))

# #count()方法用来统计某个元素在列表中出现的次数 列表名.count(统计的value元素)
# ls2 = [1, 3, 5, 7, 'a', 8, 6, 4, 'b', 2, 9, 7, 1]
# print(ls2.count(5))
# print(ls2.count(0))
# print(ls2.count('b'))

# #元素排序sort()函数用于对原有列表进行排序，如果指定参数，则使用指定的比较函数
# #语法格式为ls.sort(key=None, reverse=False)
# #1、元素是字符串的排序
# ls3 = ['1', '3', '44', '23', '99', '77', '56']
# #默认升序
# ls3.sort()
# print(ls3)
# #降序
# ls3.sort(reverse=True)
# print(ls3)
#
# #2、元素是数值的排序
# ls4 = [1, 3, 44, 23, 99, 77, 56]
# #默认升序
# ls4.sort()
# print(ls4)
# #降序
# ls4.sort(reverse=True)
# print(ls4)


# ##字典的创建
# #1、使用{}创建字典语法格式
# #字典名 = {'key1':'value1', 'key2':value2', ..., 'keyn':valuen'}
# #使用字符串作为key
# d1 = {'数学':95, '英语':90, '语文':80}
# print(type(d1))
# #使用元组和数字作为key
# d2 = {(20, 30):'great', 30:[1, 2, 3]}
# print(type(d2))
# #创建空元组
# d3 = {}
# print(d3)
#
# #2、用dict()方法通过关键字的参数来创建字典格式
# d4 = dict(数学=90, 语文=89, 英语=88)
# print(d4)

# ##字典添加键值对
# d7 = {'数学':95, '英语':92, '语文':84, 'python':99}
# d7['可视化'] = 99
# print(d7)
#
# ##字典修改键值对
# d8 = {'数学':95, '英语':92, '语文':84, 'python':99}
# d8['英语'] = 100
# print(d8)
#
# ##字典删除键值对
# d9 = {'数学':95, '英语':92, '语文':84, 'python':99}
# #1、使用del关键字
# del d9['语文']
# print(d9)
# #2、使用pop()方法
# d9.pop('英语')
# print(d9)